package com.aseo.model.entity.hibernate;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;

@Entity(name = "com.aseo.model.entity.hibernate.Nota")
@Table(name = "reclamos.nota")
public class Nota implements Serializable {

	private static final long serialVersionUID = 7808449689040544038L;

	@SequenceGenerator(name = "reclamos.nota_nota_id_seq", sequenceName = "reclamos.nota_nota_id_seq")
    @GeneratedValue(generator = "reclamos.nota_nota_id_seq")
    @Id
    @Basic(optional = false)
    @Column(name = "nota_id")
    private Long notaId;

    @NotNull(message="Es necesaria la fecha de la nota")
    @Basic(optional = false)
    @Column(name = "fecha_nota")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaNota;
    
	@JoinColumn(name = "reclamo_id", referencedColumnName = "reclamo_id")
    @ManyToOne(optional = false, fetch = FetchType.EAGER)
    private Reclamo reclamoId;
    
    @Column(name = "observaciones")
    private String observaciones;
    
    @NotNull(message="Es necesaria la fecha de registro")
    @Basic(optional = false)
    @Column(name = "fecha_registro")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaRegistro;
    
    @NotNull(message="Es necesaria la fecha de actualizacion")
    @Basic(optional = false)
    @Column(name = "fecha_actualizacion")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaActualizacion;
    
    @Basic(optional = false)
    @Column(name = "estado")
    private int estado;
    
    public Nota() {}

    public Long getNotaId() {
		return notaId;
	}

	public void setNotaId(Long notaId) {
		this.notaId = notaId;
	}

	public Date getFechaNota() {
		return fechaNota;
	}

	public void setFechaNota(Date fechaNota) {
		this.fechaNota = fechaNota;
	}

	public Reclamo getReclamoId() {
		return reclamoId;
	}

	public void setReclamoId(Reclamo reclamoId) {
		this.reclamoId = reclamoId;
	}

	public String getObservaciones() {
		return observaciones;
	}

	public void setObservaciones(String observaciones) {
		this.observaciones = observaciones;
	}

	public Date getFechaRegistro() {
		return fechaRegistro;
	}

	public void setFechaRegistro(Date fechaRegistro) {
		this.fechaRegistro = fechaRegistro;
	}

	public Date getFechaActualizacion() {
		return fechaActualizacion;
	}

	public void setFechaActualizacion(Date fechaActualizacion) {
		this.fechaActualizacion = fechaActualizacion;
	}

	public int getEstado() {
		return estado;
	}

	public void setEstado(int estado) {
		this.estado = estado;
	}

	@Override
    public int hashCode() {
        int hash = 0;
        hash += (notaId != null ? notaId.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {

    	if (!(object instanceof Nota)) return false;

        Nota other = (Nota) object;
        if ((this.notaId == null && other.notaId != null) 
        		|| (this.notaId != null && !this.notaId.equals(other.notaId))) return false;

        return true;
    }

    @Override
    public String toString() {
        return "com.aseo.model.entity.hibernate.Nota[notaId=" + notaId + "]";
    }

}
